#include "asr_stream.h"
#include "asr_punctuation.h"
#include "llm_server.h"
#include "port_audio.h"
#include "tts_thread.h"

#include <unistd.h>
#include <memory>
#include <signal.h>
#include <unistd.h>

#include "conf.h"

namespace {
    std::unique_ptr<TtsEngine>  te;
    std::unique_ptr<AudioPlayer> ap;


    void signalHandler(int signum) {
        sys_log("signal handler .... exit ......");
        ap->stop();
        
        te.reset();
        ap.reset();
        exit(signum);  // 释放资源
    }
}


int main(void)
{
    signal(SIGINT, signalHandler);

    // 初始化全局的 portAudio 库
    std::unique_ptr<PortAudioManager> pam = std::make_unique<PortAudioManager>();
    
    te = std::make_unique<TtsEngine>();

    ap = std::make_unique<AudioPlayer>();
    ap->fillSilence();
    ap->start();

    // 在 vits 下，如果句子的最后没有‘。’就会产生噪音
    auto audio_data = te->generate("这个是一句语音测试。这个是一句测试语音。");

    ap->pushAudio(audio_data);
    
    sleep(60 * 10);

    exit(0);
}
